Weitere Module- / Manifestbeispiele
Last updated: June 13, 2016
Mit folgendem Module kann ein User incl. Gruppe und Gruppenzugehörigkeit angelegt werden. Außerdem wird ihm direkt ein ssh-key hinterlegt: Zuerst muss der entsprechende Ordner angelegt werden:
class user_shellmann {
group { 'shellmann':
ensure => present,
gid => 1000
}
user { 'shellmann':
ensure => present,
require => Group['shellmann'],
gid => 'shellmann',
groups => ['sudo', 'cdrom', 'floppy', 'audio', 'dip', 'video', 'plugdev', 'netdev', 'bluetooth',],
shell => '/bin/bash',
home => '/home/shellmann',
purge_ssh_keys => true,
}
ssh_authorized_key { 'private':
user => 'shellmann',
type => 'ssh-rsa',
key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDSNp/edM111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
}
}
Damit man dem Benutzer z.B. eigene Config Dateien zur Verfügung zu stellen, sollte vorher der Fileserver in Puppet konfiguriert werden.
# This file consists of arbitrarily named sections/modules
# defining where files are served from and to whom
# Define a section 'files'
# Adapt the allow/deny settings to your needs. Order
# for allow/deny does not matter, allow always takes precedence
# over deny
[dotfiles]
path /mnt/puppet_dotfiles
allow puppetclient.home
[plugins]
# allow *.example.com
# deny *.evil.example.com
# allow 192.168.0.0/24
Über die allow Direktive kann man den Zugriff reglementieren. Bisher habe ich noch keine Möglichkeit gefunden ganze Netze frei zugeben. Im Netz taucht hier oft allow_ip auf. Dies funktionierte bei meinen Tests aber genau so wenig wie allow. Die Manifest wird dann wie folgt erweitert:
class user_shellmann {
group { 'shellmann':
ensure => present,
gid => 1000
}
user { 'shellmann':
ensure => present,
require => Group['shellmann'],
gid => 'shellmann',
groups => ['sudo', 'cdrom', 'floppy', 'audio', 'dip', 'video', 'plugdev', 'netdev', 'bluetooth',],
shell => '/bin/bash',
home => '/home/shellmann',
purge_ssh_keys => true,
}
ssh_authorized_key { 'private':
user => 'shellmann',
type => 'ssh-rsa',
key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDSNp/edM111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
}
file {'/home/shellmann/.vimrc':
ensure => 'file',
mode => '0660',
owner => 'shellmann',
group => 'shellmann',
source => 'puppet:///dotfiles/user_shellmann/.vimrc',
}
}
In meiner persönlichen vim config sind ein paar Ordner definiert, die noch nicht existieren. Auch dabei kann uns puppet helfen.
class user_shellmann {
group { 'shellmann':
ensure => present,
gid => 1000
}
user { 'shellmann':
ensure => present,
require => Group['shellmann'],
gid => 'shellmann',
groups => ['sudo', 'cdrom', 'floppy', 'audio', 'dip', 'video', 'plugdev', 'netdev', 'bluetooth',],
shell => '/bin/bash',
home => '/home/shellmann',
purge_ssh_keys => true,
}
ssh_authorized_key { 'private':
user => 'shellmann',
type => 'ssh-rsa',
key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDSNp/edM111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111',
}
file {'/home/shellmann/.vimrc':
ensure => 'file',
mode => '0660',
owner => 'shellmann',
group => 'shellmann',
source => 'puppet:///dotfiles/user_shellmann/.vimrc',
}
file { '/home/shellmann/.vim':
ensure => 'directory',
owner => 'shellmann',
group => 'shellmann',
mode => '0660',
}
file { '/home/shellmann/.vim/backup':
ensure => 'directory',
owner => 'shellmann',
group => 'shellmann',
mode => '0660',
}
file { '/home/shellmann/.vim/swap':
ensure => 'directory',
owner => 'shellmann',
group => 'shellmann',
mode => '0660',
}
}